The present invention relates to diagramming or depicting object oriented programming class, and more specifically, to diagramming and depicting inheritance contributions and overrides of such classes.
Object-Oriented Programming (OOP) is a programming paradigm using “objects” to design software. These “objects” are data structures consisting of data fields and methods together with their interactions. One of the most important features of an object oriented language is inheritance. Inheritance is the concept of when a class of objects is defined, any subclass that is defined can inherent the definitions of the one or more general classes. This helps in code reuse and better compartmentalization of code and also in better designing and organizing of code.
Programming in the object oriented language is fine if the inheritance hierarchy tree is a small one but once the inheritance tree has more than three levels, it becomes difficult to understand the contributions by the different classes in the hierarchy. Many times a single functionality has its code split across different layers of inheritance (inheriting ancestor functionality and adding class specific implementation). Many times the subclass totally overrides the functionality by its ancestors (rightly so-needed in certain scenarios). It becomes increasingly difficult to identify the value of a class and its ancestors. The advantage introduced by the class in terms of functionality and variables blurs the understanding of functional (a function's) contribution by different levels in the hierarchy. This makes it difficult for software engineers and programmers to understand and debug code.
The current set of utilities includes a hierarchy view in Eclipse which shows the different ancestors of a particular class and the functions that a present class has. But here one needs to open all the classes in the hierarchy and see the corresponding hierarchy view to understand. There is also a way to open the view of a list of all the methods in the hierarchy but it is very confusing and does not help to understand the inheritance structure. Showing the implementation of the function shows all the classes in the hierarchy which overrides or contributes to it. There is another tool where the inherited methods are depicted lighter.
The current set of solutions does not identify the contribution made by the current class and the ancestor classes in the context of the hierarchy.